package com.systop.asset.service;

import com.google.zxing.WriterException;
import com.systop.asset.entity.Asset;
import com.systop.asset.entity.vo.AssetVo;

import java.io.IOException;
import java.util.List;
import java.util.Map;

public interface IAssetService {

    /**
     * 根据ID查询资产信息
     * @param id 资产ID
     * @return 包含资产信息的响应对象
     */
    Asset getAssetById(Long id);


    AssetVo getAssetVoById(Long id);
    /**
     * 查询资产列表
     * @param asset 查询条件
     * @return 包含资产列表的响应对象
     */
    List<AssetVo> getAssetList(Asset asset);

    /**
     * 新增资产
     * @param asset 资产信息
     * @return 操作结果响应
     */
    int addAsset(Asset asset);

    /**
     * 批量新增资产
     * @param assets 资产列表
     * @return 操作结果响应
     */
    int addAssetBatch(List<Asset> assets);

    /**
     * 批量新增资产
     * @param asset 资产信息
     * @param count 批量添加个数
     * @return 操作结果响应
     */
    public int addAssetBatch(Asset asset, int count);

    /**
     * 更新资产信息
     * @param asset 资产信息
     * @return 操作结果响应
     */
    int updateAsset(Asset asset);

    /**
     * 删除资产
     * @param id 资产ID
     * @return 操作结果响应
     */
    int deleteAsset(Long id);

    /**
     * 复制资产
     * @param asset 要复制的资产信息
     * @param count 复制份数
     * @return 操作结果响应（通常为成功复制的记录数）
     */
    public int copy(Asset asset, int count);

    /**
     * 获取资产状态统计数据（包含数量和占比）
     * @return 资产状态统计结果
     */
    List<Map<String, Object>> getAssetStatusStatistics();

    /**
     * 获取资产分类统计数据
     * @return 资产分类统计列表
     */
    List<Map<String, Object>> getAssetCategoryStatistics();

    /**
     * 获取部门资产统计数据
     * @return 部门资产统计列表
     */
    List<Map<String, Object>> getAssetDeptStatistics();

    /**
     * 获取位置资产统计数据（包含数量和占比）
     * @return 位置资产统计列表
     */
    List<Map<String, Object>> getAssetLocationStatistics();
}
